{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "jA6jBcLwC580"
   },
   "source": [
    "# 小车上山 MoutainCar-v0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "QPrYUlr7C582"
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "np.random.seed(0)\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import gym\n",
    "import tensorflow.compat.v2 as tf\n",
    "tf.random.set_seed(0)\n",
    "from tensorflow import keras"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "AhqDEMsUC587"
   },
   "source": [
    "### 环境使用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 176
    },
    "colab_type": "code",
    "id": "lWyjPiyHC588",
    "outputId": "2bc6a5e0-9ed2-4faa-c9ea-9a0f504c127a"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "观测空间 = Box(2,)\n",
      "动作空间 = Discrete(3)\n",
      "位置范围 = (-1.2, 0.6)\n",
      "速度范围 = (-0.07, 0.07)\n",
      "目标位置 = 0.5\n"
     ]
    }
   ],
   "source": [
    "env = gym.make('MountainCar-v0')\n",
    "env.seed(0)\n",
    "print('观测空间 = {}'.format(env.observation_space))\n",
    "print('动作空间 = {}'.format(env.action_space))\n",
    "print('位置范围 = {}'.format((env.unwrapped.min_position, \n",
    "        env.unwrapped.max_position)))\n",
    "print('速度范围 = {}'.format((-env.unwrapped.max_speed,\n",
    "        env.unwrapped.max_speed)))\n",
    "print('目标位置 = {}'.format(env.unwrapped.goal_position))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "qwJLWgXlC59B"
   },
   "source": [
    "一直向右，不能成功"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 283
    },
    "colab_type": "code",
    "id": "kdoLX6PVC59D",
    "outputId": "282ef83e-c8ff-4dd0-bf07-d47cb198ccf6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "失败退出\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x2468f3f1710>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "positions, velocities = [], []\n",
    "observation = env.reset()\n",
    "while True:\n",
    "    positions.append(observation[0])\n",
    "    velocities.append(observation[1])\n",
    "    next_observation, reward, done, _ = env.step(2)\n",
    "    if done:\n",
    "        break\n",
    "    observation = next_observation\n",
    "\n",
    "if next_observation[0] > 0.5:\n",
    "    print('成功到达')\n",
    "else:\n",
    "    print('失败退出')\n",
    "\n",
    "# 绘制位置和速度图像\n",
    "fig, ax = plt.subplots()\n",
    "ax.plot(positions, label='position')\n",
    "ax.plot(velocities, label='velocity')\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "lLvraG9BC59H"
   },
   "source": [
    "### 线性近似最优策略求解\n",
    "砖瓦编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "FV9A2ZMUC59J"
   },
   "outputs": [],
   "source": [
    "class TileCoder:\n",
    "    def __init__(self, layers, features):\n",
    "        self.layers = layers\n",
    "        self.features = features\n",
    "        self.codebook = {}\n",
    "    \n",
    "    def get_feature(self, codeword):\n",
    "        if codeword in self.codebook:\n",
    "            return self.codebook[codeword]\n",
    "        count = len(self.codebook)\n",
    "        if count >= self.features: # 冲突处理\n",
    "            return hash(codeword) % self.features\n",
    "        self.codebook[codeword] = count\n",
    "        return count\n",
    "    \n",
    "    def __call__(self, floats=(), ints=()):\n",
    "        dim = len(floats)\n",
    "        scaled_floats = tuple(f * self.layers * self.layers for f in floats)\n",
    "        features = []\n",
    "        for layer in range(self.layers):\n",
    "            codeword = (layer,) + tuple(int((f + (1 + dim * i) * layer) /\n",
    "                    self.layers) for i, f in enumerate(scaled_floats)) + ints\n",
    "            feature = self.get_feature(codeword)\n",
    "            features.append(feature)\n",
    "        return features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "s005fHz9C59I"
   },
   "source": [
    "SARSA 算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "zsB2g6FqC59N"
   },
   "outputs": [],
   "source": [
    "class SARSAAgent:\n",
    "    def __init__(self, env, layers=8, features=1893, gamma=1.,\n",
    "                learning_rate=0.03, epsilon=0.001):\n",
    "        self.action_n = env.action_space.n # 动作数\n",
    "        self.obs_low = env.observation_space.low\n",
    "        self.obs_scale = env.observation_space.high - \\\n",
    "                env.observation_space.low # 观测空间范围\n",
    "        self.encoder = TileCoder(layers, features) # 砖瓦编码器\n",
    "        self.w = np.zeros(features) # 权重\n",
    "        self.gamma = gamma # 折扣\n",
    "        self.learning_rate = learning_rate # 学习率\n",
    "        self.epsilon = epsilon # 探索\n",
    "        \n",
    "    def encode(self, observation, action): # 编码\n",
    "        states = tuple((observation - self.obs_low) / self.obs_scale)\n",
    "        actions = (action,)\n",
    "        return self.encoder(states, actions)\n",
    "    \n",
    "    def get_q(self, observation, action): # 动作价值\n",
    "        features = self.encode(observation, action)\n",
    "        return self.w[features].sum()\n",
    "    \n",
    "    def decide(self, observation): # 判决\n",
    "        if np.random.rand() < self.epsilon:\n",
    "            return np.random.randint(self.action_n)\n",
    "        else:\n",
    "            qs = [self.get_q(observation, action) for action in\n",
    "                    range(self.action_n)]\n",
    "            return np.argmax(qs)\n",
    "        \n",
    "    def learn(self, observation, action, reward,\n",
    "            next_observation, done, next_action): # 学习\n",
    "        u = reward + (1. - done) * self.gamma * \\\n",
    "                self.get_q(next_observation, next_action)\n",
    "        td_error = u - self.get_q(observation, action)\n",
    "        features = self.encode(observation, action)\n",
    "        self.w[features] += (self.learning_rate * td_error)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ARu16qYxC59Q"
   },
   "outputs": [],
   "source": [
    "def play_sarsa(env, agent, train=False, render=False):\n",
    "    episode_reward = 0\n",
    "    observation = env.reset()\n",
    "    action = agent.decide(observation)\n",
    "    while True:\n",
    "        if render:\n",
    "            env.render()\n",
    "        next_observation, reward, done, _ = env.step(action)\n",
    "        episode_reward += reward\n",
    "        next_action = agent.decide(next_observation) # 终止状态时此步无意义\n",
    "        if train:\n",
    "            agent.learn(observation, action, reward, next_observation,\n",
    "                    done, next_action)\n",
    "        if done:\n",
    "            break\n",
    "        observation, action = next_observation, next_action\n",
    "    return episode_reward"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "KqZTOvMCC59U"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "平均回合奖励 = -13469.0 / 100 = -134.69\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "agent = SARSAAgent(env)\n",
    "\n",
    "# 训练\n",
    "episodes = 500\n",
    "episode_rewards = []\n",
    "for episode in range(episodes):\n",
    "    episode_reward = play_sarsa(env, agent, train=True)\n",
    "    episode_rewards.append(episode_reward)\n",
    "plt.plot(episode_rewards)\n",
    "\n",
    "# 测试\n",
    "agent.epsilon = 0. # 取消探索\n",
    "episode_rewards = [play_sarsa(env, agent) for _ in range(100)]\n",
    "print('平均回合奖励 = {} / {} = {}'.format(sum(episode_rewards),\n",
    "        len(episode_rewards), np.mean(episode_rewards)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "nytbD82PC59e"
   },
   "source": [
    "SARSA($\\lambda $)算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "W4WB11kGC59f"
   },
   "outputs": [],
   "source": [
    "class SARSALambdaAgent(SARSAAgent):\n",
    "    def __init__(self, env, layers=8, features=1893, gamma=1.,\n",
    "            learning_rate=0.03, epsilon=0.001, lambd=0.9):\n",
    "        super().__init__(env=env, layers=layers, features=features,\n",
    "                gamma=gamma, learning_rate=learning_rate, epsilon=epsilon)\n",
    "        self.lambd = lambd\n",
    "        self.z = np.zeros(features) # 初始化资格迹\n",
    "        \n",
    "    def learn(self, observation, action, reward, next_observation, done,\n",
    "            next_action):\n",
    "        u = reward\n",
    "        if not done:\n",
    "            u += (self.gamma * self.get_q(next_observation, next_action))\n",
    "            self.z *= (self.gamma * self.lambd)\n",
    "            features = self.encode(observation, action)\n",
    "            self.z[features] = 1. # 替换迹\n",
    "        td_error = u - self.get_q(observation, action)\n",
    "        self.w += (self.learning_rate * td_error * self.z)\n",
    "        if done:\n",
    "            self.z = np.zeros_like(self.z) # 为下一回合初始化资格迹"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "z9W4PTfdC59i"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "平均回合奖励 = -10323.0 / 100 = -103.23\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "agent = SARSALambdaAgent(env)\n",
    "\n",
    "# 训练\n",
    "episodes = 150\n",
    "episode_rewards = []\n",
    "for episode in range(episodes):\n",
    "    episode_reward = play_sarsa(env, agent, train=True)\n",
    "    episode_rewards.append(episode_reward)\n",
    "plt.plot(episode_rewards)\n",
    "\n",
    "# 测试\n",
    "agent.epsilon = 0. # 取消探索\n",
    "episode_rewards = [play_sarsa(env, agent) for _ in range(100)]\n",
    "print('平均回合奖励 = {} / {} = {}'.format(sum(episode_rewards),\n",
    "        len(episode_rewards), np.mean(episode_rewards)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "1ud7QDLyC59r"
   },
   "source": [
    "绘制价值和策略"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "5yPevgQCC59s"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJztvXu4bGdd5/n51WXvfW45JycXctXgQ9AJLaKG0N12N0q4BJ+RoIIE2zYqmpaRflodZkwm3aAgTqCZpumWUU9jNIBNBGyG0xrNJME4Mz5GElGQoDFH0OYQbslJzn1fquo3f9Q6J7W+77trrb13XXbt/fs8Tz273rXetdZba61db63v72buThAEQRAMozHtAQRBEASbn5gsgiAIgkpisgiCIAgqickiCIIgqCQmiyAIgqCSmCyCIAiCSmKyCIIgmAHM7Doze8TMDpnZzRM/fsRZBEEQbG7MrAn8DfAS4DDwIPBad//spMYQTxZBEASbn2uAQ+7+OXdfBu4Erp/kAFqTPNi0OX9/06+4vD3tYWwKepSfKJ3hT5i9dRxjPU+tjlX2KFPVH6zis+kurNY+10ad/o2k1+jHEdTnzz699Li7X7De7V/2Xbv8iSPdusd6GFgcWHTA3Q8MtC8FvjDQPgy8YL1jWw/barK44vI2n7j766Y9jE3BaV8qtbsVX+ynvLPmYyyuY7JYqfj6a8oXf7fG12W7YrJoyi6adfZp5T7pF72Oofohft7K/45Nq96mEeLA2Ghe/Ojfb2T7J450a3/fNC9+dNHdrx7SJXeDTdSGsK0miyAIgknhQG9dz+RZDgOXD7QvAx4b1c7rEJPFFmDJV9a8zVqfFOo8JSx5+cfPSR8u+XUzv4p7PvwXesPK48j1b1tX2sP/YZvy2fTpJcd8xT4XLNG2KmlSHnevxjlvVHwZtS3+xaeF46x4PRmqBg8CV5rZM4EvAjcAPziqndch7qQgCIIxMaonC3fvmNkbgLuBJnC7uz88kp3XJCaLIAiCMeB4pS1wTftzvwu4a2Q7XCMxWWwyVtZhSNZHXfV0ym+jhuJy+3ivLBEtVkhKACd7c2vappfRZlSaaq7jl5nKUFWyUtvK5zzXf0H6dGVc6TYil63jc+hnb2cM3pV7Xcd3VZVhPYzq9anzvzgrxGQRBEEwBpz0R9gsE5NFEATBmIgni6A2a5Uf1nNzrVQc43gv9cg47s3ycSs8mU725ivHobLTKdlGJaZuxpOpJ31UUspto8zJNg3xXNL1qQyVnk+VoRZsuAea9s95ZO2UZerZ1BOPqpz+XRkTUrG6RTNZ1vXh91OjRvxH0H+yULl3lonJIgiCYAw4HjJUEARBUIFDd+vMFTFZBEEQjIN+BPfWYaqThZldB7ybfpDJe939Nlk/D7wP+HbgCeA17v53xbrnAr8GnEP/mjzf3QcTcc0kdWwcR3rLpfZihY5/vJe6sB7vLZTammNJbRRqfwBYFrvHUoWdo+dis8gI6tonsVnINjk3V7VBaNT3XGJPEBtH5hqonWNno5xbS20Yy9LW7QG6jXIftT01XW0aKZrXakHtCVW/bDO3TpVrbB337ogcB7Bauctmhald0SI/+3sYyM9uZgclP/vrgCfd/VlmdgPwduA1ZtYCPgD8C3f/lJmdB6w950UQBMGY6Bu4t85kMU23hjr52a8H7ijefwS41swMeCnwaXf/FIC7P+E+uiQsQRAEG6UfZ2G1XrPANJ8V6+RnP9unyI1yFDgPeDbgZnY3cAFwp7u/I3cQM7sJuAng6y7dfI/GR3tl5Wypwm0R4KleWf5Z9PLnUjfYYyI5AZzyskSUyk5zQ9cDrKgMJXLXorSbFcn3IJWE9BjqBptzNU6kKnVflJ9IXa/+zbSSyGENWS/XxMqfXaUvSGW8hYa655bbcxl5rCqmu8obJ7e+OnK8+nyNMNvqwFFnz2W3KjHmLDHNb886+dlX69MC/gnwfOAUcJ+Z/Zm735d07hcQOQBw9bcsbCHfhCAINjNnniy2CtOcquvkZz/bp7BT7AWOFMv/yN0fd/dT9JNrfdvYRxwEQVATx+jSqPWaBaY5yrP52c1sjn5+9oPS5yBwY/H+VcDHvV+r827guWa2s5hEXghMrHB5EARBHXputV6zwNRkqNXys5vZW4CH3P0g8OvA+83sEP0nihuKbZ80s39Pf8Jx4C53/72pfBBh7eVKy1r4qV71jXNKbAEnvWxfeKq7s9Q+3tuR7ENtEGpvUJvF8W5q96jKCKsuq411RLOqjaIOdYoXrXmfMg61pXTFBtSUz67uvADL4l66i/K9s2KagTf9XHqOq+wcOxuyj4yNTN0K1a5RVaYWqm0WmmakTgnZWcOxxC41y0zV4pvLz+7ubxp4vwi8epVtP0DffTYIgmDT0Q/K2zqT4OZzDwqCINgibCUDd0wWQ1hfIaK1uS6uyOrlzC+Rr3V3ldpPdHeX2uqiejSRoVIJ6USnvExllTq/iHLFiwZpS03plUyG0yrUrVWPmZO21I01kbKkWUfq6koxKHWFVbdOlWGyGXZFetFroG7EOffbnVaO5tfL1pNr0HC9JhlpS8eZZMNVeTFzH1S4I6t8lpPDEiq+dzeba6271XLLnhVisgiCIBgTVT+oZomYLIIgCMZA38C9db5it84nCYIg2ESEgXsbs54qdrrNl7vlx9KnxB6h1eYAvtzZW2ofEZuFur0e7ZRdZU90q6vctRviGtqrvskbUslN3UXVHqP2hZx/uVaHUzSAKee+q3q4ur2qrWBesr9q5tv+TocOKxlHalupPp8599pBcsFber/0epqGpLzPrrhm5yr4Legycf9OXWkz16xKfZF7oynXPVfBbxapU9lxVojJIgiCYAycieDeKsRkEQRBMCayT6kzSkwWG+DJ3lKy7KQ8XvekfURkp6d6ZTfXXHbXxzvnlNpHuyozSSEjefRVl8ws6l1a6yYvb9TpDXdZVakr605a8UtMt1HpC6Al7qKJ3JX6hlbSqHDtrPR6qeOeKwNT1+M6x9WI4So//272w5elK3Wd1dOXdw+vylwr+xCpK3GthWr32k3mWttPJBiTRRAEQTAEx+r9UJsRYrIIgiAYA+71aqXMCjFZDLDkK9Ie7p2ymEkSuKiR0CKBaKEijb4+0inLVACPr5S9n46Jt1NSEEhuUJWHssg9fbqrhYtykb7i3VQRXb0i0cO5cbUa5T46Dv1suehr9fBJ5DBp6zFzXDh3bOj6Svkss17PjxZpUg+rXAR3sg/9rBpFL/dfNyftVESBt1W6ysg/SdJDPc4avaVgFj2mLILygiAIguE48WQRBEEQ1GArGbi3zicJgiDYRDj1Ch9ttPiRmf07M/trM/u0mX3UzPYNrLvFzA6Z2SNm9rKNHGdbPVk4PjSTrGrqKxU+lSuZi7wij51f7pbdXr+8sq/U1gyxap+ANAL7tNg5qmwHtaJI5aOqPSF31tS9UW96tQV87XT5s+X+SXSfi93yLarb5FwsW4nNotznnPbi0HHmUJtNSzLCqn1hvlE+Y2pLADi/dbzcR3T9pvx7Lns6ziQ6Xc+pNFUWmcvcGrqPrqktStyXM7Y7LaBERZbZKtfaUZAryDROd1ontRGNiXuAW4qCcm8HbgF+zsyuol8w7jnAJcC9ZvZs98yNVIN4sgiCIBgLRrfmayO4+//tfvZX8APAZcX764E73X3J3T8PHAKuWe9xttWTRRAEwaRw1hTBfb6ZPTTQPuDuB9Zx2B8Dfrt4fyn9yeMMh4tl6yImizWgSQC/1k0lI43A/ookAfzKSrmtSf+eWinLUgBLveFSTBWdGjdsR+SMxW6a0FB5arkcOV4lEZ1YLp8bz3wOk22Wu2U5TLfJyTuaizAZx1y5vnirUR1dredD93n+3IlSe8lVKsy5+KpbazkjwKKV95Ezlqr8dUHrmKxX11pxg61IXpijSqYCEtfXpEiVJntUN+ucBKz3sWmkvtY9n75r7RqeGh5396tXW2lm9wIXZVbd6u4fK/rcSl8x/q0zm2X6r7tAfUwWQRAEY8DdRpYbyt1fPGy9md0I/I/Ate5nZ83DwOUD3S4DHlvvGMJmEQRBMAb6Bu5mrddGMLPrgJ8DXuHupwZWHQRuMLN5M3smcCXwifUeJ54sgiAIxsLEanD/MjAP3GN9SfABd/9Jd3/YzD4EfJa+PPVT6/WEgilPFsWM+G6gCbzX3W+T9fPA+4BvB54AXuPufzew/uvon4ifd/d3ruXYT/YWk2WnXNNTDLdRPJGxWZwSm8WRTrnPk5LO49iK6P41NM61phCo8yj81aWyrWSpU7411JYAcGypPPYqe8LJpbKtIGezWFmRdCmd8th1m9y4Ei9M6XN0rjzuRqO8fs9Cmk1YUfdcZS5xna2Winc2y+fnwnbZ/pD7BaqaeNLHhn83NDL3hm6hthUlSe0BNOTS6tmaS9y71aaRHkcLiTWrMuqqK/IE3HMH6Ru4x5/uw92fNWTd24C3jeI4U5OhzKwJvAd4OXAV8NrCL3iQ1wFPFifjXcDbZf27gN8f91iDIAjWQ5dGrdcsMM1RXgMccvfPufsycCd9v+BBrgfuKN5/BLjWiucsM3sl8Dng4QmNNwiCoDaTiuCeFNOUoS4FvjDQPgy8YLU+RXTiUeA8MztN36DzEuCNww5iZjcBNwFcdmmT00VmWZWcABblkVwzyKpbrEpOkLrGakT2UytlV1mNrs5JRur6WpVFVqOeOzXqaZ9cKUsgyyJD5SKlF5fLrp16ShdPlffZWyrvM3MJsOXyWK0j/0gaCJyTKxqJ32aJ0/PiFiz9FxdSt+HjC+Vr3RR32yPzZRmv3SxLN8/YUXat7Q+rfNzT3fL5UvlnqZGOSzPqqtylrrHnNdNxVJGTmTZKWjBJJMyRH3E6VGUjniWmOVnU8QFerc8vAO9y9xOW8/Ee7NwPbDkA8K3fMjf6uz4IgiCDO6zU+KE2K0xzsqjjA3ymz2EzawF7gSP0n0BeZWbvAPYBPTNbdPdfHv+wgyAIqunLUDFZjIIHgSsL/98v0k949YPS5yBwI/AnwKuAjxcBJ//0TAcz+3ngREwUQRBsNjaa92kzMbXJorBBvAG4m75EeXvhF/wW4CF3Pwj8OvB+MztE/4nihg0dk6e10txF1GXqKvu1TjmD7JFudVW7IyvlPmnlt2qbxXJvePU95VRn+DFyqI1C02wcP162tQB0l0RZVu/HE+V9NpeH2x8AmkviGqtemzWESj2F2u7NNYau7+5IFfOTC+XP0tpZzqvaFbmhJTaLXFoSva4LzbJ9Qe/H3c3UpVcr+FUFeKWutUO7A2l1R7Vf7axwrYXtGf07KdfZSTHVOAt3vwu4S5a9aeD9IvDqin38/FgGFwRBsCFChgqCIAhqEDW4Z5SOw1e6/UfoJ7ppdtdFyRT65U65UNFXRIZ6ciWVob62XJahjq2k8s0gdR5TqwoAKSsiIeWyzh49VR7X4pJkOJXI6d7x1G3TlsTNVSSi5snyelVRcupFVZ+khs66ZKjyRlqfprOSiZRekUhpOT+deZFqmmXZqdNN93liruyOe+GuslvrXKMcaZ5zmdYiS+puq1lplVzW2fW4124UdaVtZ2Xicp+G+F5r1Pi06XtDbRUn4G02WQRBEEyKM0F5W4WYLIIgCMZEyFAzSgfjqSLq+qleKkNpRPZTIlUd7ZTbxzplmQCqo6vXQ1WN7SOnyuNST6ZeJjDo1KnyZ1XPJpfI6ebp9HM1T0sfkZBaomY0l8vtRqbuTkP7dMufXZ2KcvbDVIaSpHUSeC+1pWimOSbpLJZ32l2UfS6IbDdfHuipXNLEeblOcl1VflRvKUgLY+k9ecXCE+Vj1kiHrXJsW1MLaqR+RsrSqO8FiZKvSgK4FQhvqCAIgqAW4Q0VBEEQDMXdapU0nhVisgiCIBgTIUPNLE9Xrsppt1/r7Cm1H18pt48sl11lT0qWUIDl7vBIaEVvJtWpIXW/02jhU8vlcXS6EqHcy7ghLsu4xA22dby8vn083Ydq+2qzaIvNorUkro6dNIS7KX16LYnormOz0MBy6aPuuMkxMpHlakvpiE2nsax2EWl30/O3vFAe6FG5Tssr5Xvh3F2nUFqN4a6xj8tF0ajwXGEjzYS80iyPY39j/K61STEkqBVtvpkIm0UQBEFQi5gsgiAIgqFEnMUMs+JNHuucC+TrZz8uMtQTEqH95HLZRTVnvErcViuenfVmUokpt0y30Sd2lZ2WjqVFmhony+Nsiiuoyk4qKQG0TpfbzcXyQOZOlNv6f5OXocqySkMkoqT4UdZ1Vs6PuG2aSELqOpvTOxraR7qoPGYq/TXSgbpGhfekWJRG0We+eDQBZFUSyWOdcuT+5QtHkn1qkaWTPU0cWJa2Fj3jAy20vazjJa61FXVpZpWIswiCIAiG4l6vSuWsEJNFEATBmAgZKgiCIBhK2CxmmI43zqbweLKTZox9ckXSe0jGWLVRaBGYHJqqI0G178w+ddmTx8tjXzpd1phdtG61TwC0TgzPCKupOnI2i+ZyeVytU9I+qSljpdmttlm42izENtCdzzzmV7nOapEm2WcvTbCb/NM3tI94tapHqmc0ef1s+r2iLqynM987aq9qiivtiXbZXqX37NHO8KzIAMviI12VyRZgX7Ns0OrppV6HjULdaXvyWXoyrobeCFPAY7IIgiAIqggDdxAEQTAU97BZzCyOnc2omXv81oydx5bTrLKD5GQo/SVRdbMcWyofY6mTXhKNyF5elGJIp8tt04yxp1KpRqOvWyKjtKU9dyKVHjTaunm63Kd9olynWqUHW0n3qfWxq8J2c0pgtTg4nNZi5rrKZVH33IYoHhoXnbrngldGkkumW0t3okN9qkLW1AwBjUxt8FPiwnupZNBdsLK0lSugpDXHVR5rqn7WqK7jvWcM37updDVK7yXLusLPKttqsgiCIJgkYbMIgiAIhhK5oWaYjjfPJgc8kqmf/ZREaGs0bB3vJw3C0V8WKgtoxLdKTrllPWlrRHLraHmfc0fTcarMpDLU/FPlx/O5YxmpQTyXmqeHy07qEWSdVAJpiLyjHi8mbjXerP5n9PbwKPDK9nq2kXbrZLpL9bpSaavXGe4tBancJTWaOCbyj96PuYJKWoNB63zr+lxSzi7D+1zSOpZsM4hGePcZfq3VWyr5f/WMlGpjlIk89VYbJ2b2RuDfARe4++NmZsC7ge+m76/3I+7+yfXuf6qCmpldZ2aPmNkhM7s5s37ezH67WP+nZnZFsfwlZvZnZvaXxd8XTXrsQRAEVfSwWq+NYmaXAy8B/vvA4pcDVxavm4Bf2cgxpjZZmFkTeA/9D3QV8Fozu0q6vQ540t2fBbwLeHux/HHge9z9m4EbgfdPZtRBEAT18MLAXec1At4F/K+Un2mvB97nfR4A9pnZxes9wDSfLK4BDrn759x9GbiT/ocb5HrgjuL9R4Brzczc/c/d/bFi+cPAgpml2fKCIAimiHu9F3C+mT008Lqp7jHM7BXAF939U7LqUuALA+3DxbJ1MU2bRe6DvGC1Pu7eMbOjwHn0nyzO8P3An7u7xCD3KU76TQC7L9rJU0WU9vGV1C32xErZZbDKRpFbr8uqYl0rI7yB0ydlHjxZvmzqGtsWfVzb/WXl47Yl+rp9oqyGZzwsE/uBRmSrlK0P25YRdF2W6THUtVbdTSGNjNY+SbvCdtDfptzW6PVEthf7TC8TTKxH6S2nfQZprGQ+66IUxmqLq2xb7G6SgfdYq/o31o7m8IHl3G+b3eF3/s5ueZ+7GsOz0gJ0xb12hbItZa9lQu8rGK2rbMoavKEed/erV1tpZvcCF2VW3Qr8b8BLc5vlhlR3QMo0J4s6H2RoHzN7Dn1pKnei+p3dDwAHAC686rwJmpuCINjO9J8aRuMN5e4vzi03s28Gngl8qm/P5jLgk2Z2Df0f4JcPdL8MeCzZSU2mKUPV+SBn+5hZC9gLHCnalwEfBX7Y3f927KMNgiBYIz23Wq/14u5/6e4XuvsV7n4F/e/Mb3P3LwMHgR+2Pv8QOOruX1rvsab5ZPEgcKWZPRP4InAD8IPS5yB9A/afAK8CPu7ubmb7gN8DbnH3P657wJ7b2ShtlZxg7W6vORkqKVQkD0cnpV72qcVyu5txne0taqEiSQIoGeYkh1tSpAjSRHcN8XrVwkSNjJtr4voq7USdUFfaTEGg1N0WacuCnOusblMRFJ5cxlz554pn0kRRq0hWCCQapUbVK80absLdtrisSv3s0/JBjjdTOVa/vOZE/lHX2RzqKrvsIp3Khz8lKvJFzeOVx9A8lOpmXYfxRnBP1nU2w1303WYP0Xed/dGN7Gxqk0Vhg3gDcDf9PKG3u/vDZvYW4CF3Pwj8OvB+MztE/4nihmLzNwDPAv6tmf3bYtlL3f2rk/0UQRAEeRyjN+F0H8XTxZn3DvzUqPY91aA8d7+L/uw3uOxNA+8XgVdntvtF4BfHPsAgCIINsJWMpNsqgjsIgmBijNDAvRnYVpNF1xscK1xmtZDRmfWDJAVv5HfCSi+9EdRmoTeLpu5QG0W3k/pYajqPxN4gno3q6ajZYft9JGOspu5YLLslNjIZYk36WE9SS6j+K26btVxn1W6k22QKKHlLqx2JHSQpjqS2lGSXadbZin1mbRSCZp/Q65rso4bdA7lXfKX8YTqt8kCXMvdbUyo7adqbltgw5juZVDBoptpyn0Uv2+o0C+2iZ76a5LMuyAlblDS+Xfl/3W2pnXLsbKFHi201WQRBEEySeLIIgiAIhuJAL6M+zCrbarJwnnaPVTdZyERT29rWA3hFBHdSeljrLp9OL0njdFkqaJ2SLLMVGWTbJzMRtiJDtU+kUsIguRrSScJO/RWVuKyu/R9Ho8JNXHqtmalZrtuoKiVSjUpMuUJFiSQkklrVL8hsBHzF7aTb5OoDuWSm1Uy1PanHru2VjAy13CwfWAsmtTplOWeukd47GtWtmWt3NsquslpvfKelCRm6so3KUJsOJ58qeEbZVpNFEATBJJlynMVIickiCIJgXMRkEQRBEAzHtpeB28zeCfyGuz88gfGMlZ7bWTfAxU6aoXIUeeVXZB/LK+VTvCTtFbVRnE7HkKTzkLQQLWm3T2vm1nScia5f1c6l+0jyLUi6DzVaiK9oLt2HVaS0UPtDo5v2d01Vonah+eEZYXt1UohoO5NVdtj2uX2M5VdoRQqM5eX0K0BNS6daw11OWzX8hNtSsW9B8suoDSOHurZ3k5M6/LN2krqC6SaNUVfO22ZPFn8NHCgS+f0G8EF3zxTqDIIgCM7i4FvIG6pyGnX397r7dwA/DFwBfNrM/ouZfde4BxcEQTDbWM3X5qeWzaIogfpNxetx4FPAz5rZv3T3G4ZuvIk4U+YQ8pJTV34FaMZYfZReV2rh9TyW6qPy8vC2RmxrdDZAc1mybS5LsaMVaWdkKLSPRnA3hn9Ya2T2WeFu20gipzMu0HLcrhQ7qorYrpFUNRlnZVbazDLdJulTIxtuFaa/bPWYmXtYPXj0Pk/amS+7xW5Z5j0h7ra7m+X28d6OUntXL5WlenLdFrzsjtv28j/C/s3wHbydZCgz+/fA9wAfB37J3T9RrHq7mT0yzsEFQRDMNNtpsgA+A/wbdz+VWXfNiMcTBEGwNdiGQXn/3N1vH1xgZve5+7WzZuh2fzqBoEpOkHpbJOsrZKp+H/HYkG30sb+3LIWNljLeUBWJAlsVslNzMSNDLYlnSFX0UGZ9ktRPa3JXaDM541/jdNlLRiPHs3KY0GuXJQ5vVslOWg0ps9MKb6hK6nhDred7RaPAK6StOq6c2mepI4WLRD7URIMAHfF0U4+pE61y0aXd4uKnshTAnsbw6lBat7spJ3Tc9bZzbIugPDNbAHYC55vZuTx9K58DXDKBsQVBEMw2W8gbatiTxb8Efpr+xPDJgeXHgPeMc1BBEARbgXVUet20rDpZuPu7gXeb2b9y9/80wTEFQRDMPs72MHCb2Yvc/ePAF83s+3S9u//XsY5sLBidbt9GsKJhu1SnE1bXvZweqTV3ExuGZP00yRKaS6SZFDvqDF+fZGbt5qKvJdpabAHqOkvOVtCRPuI6y7IYV7SwUSMT9uwaBS7Mle0RuYhv81RDLx1iCspA1hymtpMKG0ZuH4n9JdlGi0npDnKus8NdZfWezrmQ13GvLfevtidU7UPR4keTx7aNgfuF9N1lvyezzoEZnCyCIAgmyLTnqxEyTIZ6c/H3Ryc3nCAIgi1EjfK6s0KdoLxfAt7h7k8V7XOB/9nd/824Bzdq3J9O9Ke1r6E6IttE78m5ISaushURtPqYmkTckiYO1Ajt1umetMvjbJ7KFKdZKruoqsxkK7LNivQH0D5dla4qitNkoq9RyUzdWlvlW9abGTlRpClVHBPpRtfn1DH1rlUX1Qq1Ibd+zbJTDZfetbczLtGyrFHRXg9a7GgUpIkFy/Qy39wNqjJAboAtFmdRx/H45WcmCgB3fxL47lEc3MyuM7NHzOyQmd2cWT9vZr9drP9TM7tiYN0txfJHzOxloxhPEATBKDGv95oF6kwWTTObP9Mwsx3A/JD+tSjyTb0HeDlwFfBaM7tKur0OeNLdnwW8C3h7se1VwA3Ac4DrgP+z2F8QBMHmwWu+ZoA6k8UHgPvM7HVm9mPAPcAdIzj2NcAhd/+cuy8DdwLXS5/rB471EeBaM7Ni+Z3uvuTunwcOEalHgiAIxkalzcLd32FmnwZeXCx6q7vfPYJjXwp8YaB9GHjBan3cvWNmR4HziuUPyLaX5g5iZjcBNwHMXXjOCIa9MXqd8gOQrUhKgtS8gMkyqRtDQ4v9rFS4wQJ2SrJ6qk1C7RHLqc3CxTXW1Wah9gd1i51Li+q4uN829pavmc+1pZ2xWcyJa+ec2DDaNdJ7VDCKdB+V+6xzDNEwqsal9oiqlCywzuzKm5BppPuYFYmpDnXLqv450Kb/wPTnIzp27g7UU7tanzrb9he6HwAOAOy68uItdOmCINjUOFsq3UflVGtmPwB8AngV8APAn5rZq0Zw7MPA5QPty4DHVutTVOrbCxypuW0QBMF02UI2izpPFrcCz3f3rwKY2QXAvfRtCBvhQeBKM3sm8EX6BusflD64Ny3TAAAgAElEQVQHgRuBP6E/WX3c3d3MDgL/pai1cQlwJf0JbUNoRLbWIlZX2VwBJY3gTqLC1XtPb5RcveyKzKKNFa2XXeGyCtARmWlJJCWVpdYhQyWylJCrd9zYu6e8YPeuUrO3q+xb0dlV9+F4YFzrcHNdMzUkpTTaumJ9LfdblZlWHWFtRuEqq1ln2+KG3qhYn1s2JzW12/LP1J6C7KRsJRmqVk2wMxNFwRM1txuKu3eANwB3A38FfMjdHzazt5jZK4puvw6cZ2aHgJ8Fbi62fRj4EPBZ4A+An3L3Gt+QQRAEE2RCTxZm9q+KMIKHzewdA8tHFmJQ52fZH5jZ3cAHi/ZrgLs2ctAzuPtdui93f9PA+0Xg1ats+zbgbaMYRxAEwViYwJOFmX0XfQ/R57r7kpldWCwfDDG4BLjXzJ693h/Wdbyh/hcz+37gO+g/TB9w94+u52BBEATbhQkG3L0euM3dlwAGlKCzIQbA5wuF5hr6sv6aqSX4uvvvAL+zngPMEmn6Dh+6Ppd1trIymab3qLBH5ND0Fd15sZPMly9rIydcq9uq2DnU7tHTjLJAT9xrTVJvWEtFeHGd3VGulgaALpOUIC771NQekFbGS/rIsKrSgQBrd69VU1UuY2xFmpFc2pGq46yr2t4a0Up5ao8AmGuKPaEhbatqpz7kbdb2g7gn/40TT/cBa/GGOt/MHhpoHyg8OevwbOCfmtnbgEXgje7+IGsIMajDsBTlx8k/RBng7j79oIUgCIJNzBqeLB5396tX3Y/ZvcBFmVW30v8ePxf4h8DzgQ+Z2TewhhCDOgzLOrtntXVBEARBDUYkQ7n7i1dbZ2avB/6ruzvwCTPrAecz4hCDWjKUmf0T4Ep3/w0zOx/YU6TZmC0MmsVUn4tcTaNby+sb8vjdy+gEiZDVtaFtfUzNSQ9dycTV2VHeprlS1jg6p8uXtd1NP6tGPtuyHLgl6zPR1g11v20Nv510HyZusQC+e0ep3dtR/vBdcZXt7Ez1ne58+fzo+ap0jR2BlDOWoOd1ZZ3VglMS7d9M7412qyz3tOS+V0lJJSeAOUlFoO15aasM1cxIRnOJu63L+vKHb4trdisjObVt7a7XtZmczeL/Al4E3G9mzwbmgMfphx6MLMSgToryNwNXA98I/EYxkA/QN3gHQRAEqzGZyeJ24HYz+wywDNxYPGU8bGZnQgw6bDDEoM60+r3AtwKfBHD3x8wsJKogCIIKMrb/kVMkYv2hVdaNLMSgzmSxXERNO4CZpdrBjGA8/eial6HKbX3MXVouJ7HL1h4WmUkTB6buT+VmVr5Q5UoUoa62RYZpqMQENObLn0VrcFcMob9MkvpVyVC0pXCRSE4A3T3lZd0d5W1WdpfbSVJAoNeSa9DS9bKBekfV8YbS26cq+jpXUEmW9dprawN4S6swaQf14KvWx6q8/uoUQ9rVKkf3726WE1fukYpeexqnpS0Vv4A9jfI+d8o38W4bXns92Bh1IrE/ZGa/Buwzs5+gn+rjP493WEEQBFuAbZYbqgf8v8Ax+v68b3L3e8Y6qiAIgllnhqrg1aHOZLGHfsW6I/QLFH16rCMKgiDYKmynycLdfwH4BTN7Lv28UH9kZoeH+f1uZs7YKjQ7LEC3K9HB8rNAM8gmGWWBXlfFazm+7mNOopp1e1IbhCbk1PUa0a1ZaQGaS1JEqCHbzJVvDVvIVNLtyX6bw1VNl312d6XuuL22Fi4qt7tio+jOpddAlyXav9oPKuwNQKU7bbKN7nM9Edy6j4yba7Jf7SNtdZXN2RuazfI9uWOunHF4d1vsES0ppAXsEhvF3lbZJrG3earU3pe0y/1nlu00WQzwVeDL9LPOXjie4QRBEGwNjMl4Q02KOsWPXm9m9wP30Y8K/Al3f+64BxYEQTDT+NPJBKtes0CdJ4uvB37a3f9i3IOZNsk1q3A7zLkhJhHaWiNZImitIfvMyRUVkoYOY3mP7jPnt1luNlfKfRpL0l7M1PEWn0pN8odEjmvUeK5wkbq9dnaU97mySyW3nAxVbifndI3nE6iO6q4oZJS467L2RIJ591u9Bio7lX/aNtvl6zg/lxa12tEuL9tVITud00rdXHWZyk6aKHBO25mkgU25aTViuyltjdgea7T2aszIRFCHOjaLmycxkCAIgi3HdposgiAIgvUxKxJTHWKyCIIgGBcxWcwmDnQLl9lcqg6l0xE3TnFr9YzrbGrHqMjnkaRnyIxjp/rfSjoPSf6aS4GhWLes5/Ykc21DXFgbO3KiuzRFp9dfVYk9Ymcqwquba2dhuE2nThqNxH4wAtfZxA5SdZlzp6/CrtFriz0i4zqL2CiswlW2JRli51upbWChVbZZ7JT2LrFZ7GiWbRoAe1tlG4Wm90hcZSXdx169qYFd4t69cxo2iLXgW8sbapOf7SAIghkmniyCIAiCKsJmMaMMZp3NUZWRU7PSZmvOqqus1txul59LXXbqK5kxiHttT7wdk2ykKv9kZKmlvSpllTdqLsv61MMyIzPJelE4eploa6Urn0WjsVW6UTfZ3LI117bODLMyQrtKfcwcU+WwRHYSicnbmTtO7idrSX3sOXFJFdfZhXZ6YasitNUt9tz2yWQfF7SOl9oXtZ4qtVV2ukBkqkxp9YRGRZhY0yrDyMbPFpospnI2zWy/md1jZo8Wf89dpd+NRZ9HzezGYtlOM/s9M/trM3vYzG6b7OiDIAhqUDfj7IxMKNOaem8G7nP3K+lHhiexHGa2H3gz8ALgGuDNA5PKO939m+gXZfoOM3v5ZIYdBEFQD2NrRXBPa7K4HrijeH8H8MpMn5cB97j7EXd/ErgHuM7dT7n7H8LZClGfpF+IPAiCYFOxlSaLadksnuHuXwJw9y+ZWS4x4aXAFwbah4tlZzGzfcD3AO9e7UBmdhNwE8DchedscNhTouJmWtldbjfUkzGj/6pLX0NsJV21WXQzg0gy6kq7wqah9hpIXUw7C7qN7DOTDDc5X1Vur0od19kKG0XyWbWiXWYciY0isVmkfpiNxEYhNglJ57Frrnxz7GmnGWPPmRM313bZzVVtFPubqc1if/NEqd0WA1baLm/fzlyEtvy2bdtw41OVTWMizMhEUIexTRZmdi9wUWbVrXV3kVl29tSbWQv4IPAf3f1zq+3E3Q8ABwB2P/viLXTpgiDY9Gyhb5yxTRbD6l2Y2VfM7OLiqeJi+unPlcPAdw60LwPuH2gfAB519/8wguEGQRCMlhmSmOowLRnqIHAjcFvx92OZPncDvzRg1H4pcAuAmf0isBf48fUOQIvQ56jjKlvjSMN3qr3nU6khyWQr+kUSJSrH6KZBuolbaxJNLC6spmOADctQuWfHJLpaT3qNCO4ksnwKrrMqIeWyzmphokSq0ujsufTeaM2XL+ScuMruFBnqnPmyxKSSE8Dedtmt9TyRnXaKzqnR2QC7GmV5a5fJNhKhvUeisdsZt9d5Ux/xGWALTRbTEvVuA15iZo8CLynamNnVZvZeAHc/ArwVeLB4vcXdj5jZZfSlrKuAT5rZX5jZuieNIAiCcWG9eq9ZYCpPFu7+BHBtZvlDDDwtuPvtwO3S5zDV1QWCIAimTshQM8yZCOtmI72KPakprXkCrSHRstlKRcOPr/JXUvwos31yww0v851ISp2dmX2KDCW1Z1JJKSdlaR/9haSftcY/TlU0ep0Ibj1OVfGodAfposp9aL32Ot5Q6u2k9djF+6k1nybXS2Unib6ek+hr8X7ak6mffe4akwCe1yxHawNcIB5Su+QG2t/YBl89MxRwV4dtcMWCIAimREwWQRAEwTDORHBvFWKyCIIgGBPW2zqzxTabLPxs1lnNDptlHWZ0zTKbZLIdwb3TUxfKTBGmQXIf1ToSoS3upIlNI+exUWGzSI6buPhmdll1R26CoNwciTtuHTuJuM4mhYvUZtFKL8J8u2yz2D0vNgqxWexpD4/OBji/XY6+Pr91rNQ+r1Vef1HGZtGUG10/fkMuflMLemUu9KaIyF4LW8xmMWNnPwiCYHaYRG4oM3uemT1QhBE8ZGbXFMvNzP6jmR0ys0+b2bdt5DgxWQRBEIyLyaQofwfwC+7+POBNRRvg5cCVxesm4Fc2cpBtJkM9TSPjOttoqLwjc6lKCxk/Vw3QToQDdevUfeRunGSZ6jfSoYY7LvL5E5dVqT7TyLjOJjJURUR3VYK/LHp6KhL45Q5TZ5tBclKY6/1SUdwoqZedcZ1Fihmpq2xbXGUX5tNCReoqq7LTORKNvU/aucJFe8U1tioaeyHjVz0vN4PWz56XiG0tVDRzktMqTMjA7cCZLKl7gceK99cD7/P+l8wDZrbvTJql9Rxk204WQRAEY6f+ZHG+mT000D5QJEGtw08Dd5vZO+n/pP3HxfLVMnfHZBEEQbBp8DWl8njc3a9ebWVFFu9rgZ9x998xsx8Afh14MRWZu9dKTBZBEARjYJRxFhVZvN8H/Oui+WHgvcX7w8DlA10v42mJas1sq8miYc5Cq6/7rnTT1KM9cUFNkr2KjtrIGAO6nTX629a5mRIRfng70ctzx7Dhdg2TYke9TLbc5FeTtBN30VH846xDyk68lyv2kdgnyLjGJvusyCA7n+r6VTYKdYvd0U5tFrvakt5D0nmojeKcZrm9V9oA+yRVx57G4tD23sz5XBCbxI5ZzBg7Cuqkt944jwEvpF/C4UXAo8Xyg8AbzOxO+uWpj67XXgHbbLIIgiCYJBMycP8E8O6iINwiRWVQ4C7gu4FDwCngRzdykJgsgiAIxsGEgvLc/f8Dvj2z3IGfGtVxttVk0TBnd/HYvpJU2Uk5vVx+dE48MDM/GxK1RvokEd11VKuk8M5wH1SXO9RyEd7J2IePK5s1NYngHh6tPo5fWYlbbOY4VRlik33mbo2kOJR8eD0/EmXfyMhQWi9bZadd82WJad9CKhntbpX7aOEizSC7X6Kvz5Na2f1lZRlqX6O8z/1NzX4bFQNWY1ZqVdRhW00WQRAEkyQmiyAIgmA4zqQM3BMhJosgCIIxESnKZ5SW9dg319dfexmxuynPjIk7qVz5rqYDgVTrFx2/s6zpXfUY6S7XbObQMeQ2qLCt5DcavovEVpKkNtEPkvlPqnHcqn2sNd2Ha1U7dT0m4xo7r1XtNGNs2R6hbrGQ2ij2LEiqjnnJEDuX2izOnSvbJC6aK2eIvWTuyVJ7f1NtFmm6j7aUTWzL/0W7ImMs5LLKbs10HpXEZBEEQRAMI4ofBUEQBNW4R/GjWaVpPfbP9R+7czJUo8LNtSlSxKnlNCq1JxlfNfK50Sw/fvfE/1SjxCEj91QWGZItMhHJaVizrNdtMucrdUnVDjqu4ZlbsxutI1NtIivlPn+pf3WGWN2HusJqoaK5OYm+zmSM1Yjs/QtlSUllpzP37iDnSdZYlZ12NsqutZpBVqOxIS1ctFNkqJ0SjZ2Toea3a8S2snXmiukIh2a238zuMbNHi7/nrtLvxqLPo2Z2Y2b9QTP7zPhHHARBsHYmUfxoUkzLynQzcJ+7XwncV7RLmNl+4M30c5pcA7x5cFIxs+8D0oiiIAiCzYDTf5qu85oBpiVDXQ98Z/H+DvoJsH5O+rwMuMfdjwCY2T3AdcAHzWw38LP0c6B8qO5Bm+bsbvYfw0+3MhKSaBzLFVHe3UxktHpM9cRjKvUIElkqVSsSaUqf+hOlpkoOIqMqaR9NiJiLVq9wO0pczNcT6LvG6GuA5LJVFS4S2ckyta6bEm2t0detVrmtstMeKUoEGRlqXqKtRXba20q9oTQiW72dVHbaL4WN9jfSG07qXrE3JKX1MxvzQC2mNVk840z2Q3f/kpldmOmzWuEOgLcC/wf95FhDMbObKBJrnXPxjo2MOQiCYE3MisRUh7FNFhXFOmrtIrPMzex5wLPc/WfM7IqqnRTVpg4AXPKcc7fQpQuCYLMT3lA1qCjW8ZUztWDN7GLgq5luh3laqoJ+4Y77gX8EfLuZ/R398V9oZve7+3cSBEGwWZhQ1tlJMS0Z6iBwI3Bb8fdjmT53A780YNR+KXBLYcP4FYDiyeJ3604ULetyfvs4kHed1UhV5VRzrtRuNtL+i52yvntyubxN28vatto40jhfcC1E1B1uw9AiRIn9AartB3VcVJNNKowUGgVdJ2NsVfR1bpzq+qo7lejrRlOisTMR3BqBvTBX1vrnxWaxS2wU++ZTF9WdkjF2X7usqlZljO0vkwyxYpPYIzaLC6St9gmABbGjtW247U6jtfvLtkmE9hD6QXlbZ7aY1hW9DXiJmT0KvKRoY2ZXm9l7AYpJ4a3Ag8XrLWeM3UEQBDNBr+ZrBpjKk4W7P0G/yLgufwj48YH27cDtQ/bzd8A/GMMQgyAINsxWerLYfhHchWvhSjt9tNYIbmVHsyw95PqfalbITK3ycVfEtXa5lV6SjshOnU55H92OuOdK8XBvZB4gexVurqpP5E5Nlatskokxsw/dRBdUub1mJCNLIrDL7aZEXzfFVbbVTAsVqSusur1qLexzpBb2BQvHk32eceM+w/ltcYMV2WlvM3X+0+JFC7YibZHPRLPMRV+3WasMFZJTlrBZBEEQBNVEbqggCIKgDiFDBUEQBEPxKKs6szTpcU6z78K4kElzcLS5s9ReaOwttVe8rN3uyOzjqZVylPiCFLdf7pb3cXKl7Fq7mHHHTewaK+XLttIs77Mn9ohuN9WUtShTYufQwk5Zm4W2h9swEnk8ZyNaY3qPZjM9X42WusaW96FFh3Qfao8A2C2usLsTG4UUKhI32AvncjaL8jYXtMp9tAjRvkZqs1DX2F1is9CMsXsa5fstZ2+oslEEayCeLIIgCIJKts5cEZNFEATBuLDe1tGhttVk0bTe2Uf5Za9+1O5KdZ9Tvfny+nb6CL+jWZYnjnUWSu3T3bIMsNAqSw0nRJYC6IgktCgZcxc75cuorrYrnfSzajbcOtKVolJWVQB3HRmqoUWGRCLSrL05N9e2RFPPSZ8dGn0tUuHOVipDpTJTOQPsOZIR9lwpSqRFiAD2NMrbnNdUGao87n2NTNbZhrrKls+Pyk51CFfYEeHMTMBdHbbVZBEEQTApDI+gvCAIgqAGMVnMJg38rBywkMlAp8WPzpEayItefqTf09yT7EOlqyPdXaX20U7Z40q9p3Y2y1IXwGJXZCeRSU5J8sIVqf6z3EkvsxZu0m1UhsolXtT/A5WINHo9EyycoMkZWyJDNW34eoAFOT8q9e2WBH4LEpm/q5UWKlLZSb3pzpWEflVFiCCtf32hbKOJLfdla4mXT2pbkgBWSUrh+TRmYrIIgiAIhhI2iyAIgqAOW8kbKtwegiAIxoL3Zag6rw1gZq82s4fNrGdmV8u6W8zskJk9YmYvG1h+XbHskJndXOc42+rJok3vbPGX3HyvrorKolefrq5rVs/ykfY3y9r20VbZhnG0k9YJP9Ur20qOizvuyU55/XKvPE51rQXoiG1F3XOXuuVt1B4B0FX3W/3smWj0QXJZe3WbdmO4G+xcI71mWlRIbRLntMq2gvmG2DSaqX1BM8CqK+yeprrBis3Ccq6z5WVN8T1uy/mZr2FfiIyxmwhnUjaLzwDfB/za4EIzuwq4AXgOcAlwr5k9u1j9Hvq1hA4DD5rZQXf/7LCDbKvJIgiCYKJMQIVy978CsNSD5HrgTndfAj5vZoeAa4p1h9z9c8V2dxZ9Y7IIgiCYBmuIszjfzB4aaB9w9wMbPPylwAMD7cPFMoAvyPIXVO1sW00WDTP2NPqP5UueTvl7GrkK2E/TlNz0u1pPJH2WKT/2q8tkVx7793TLkshuSWYIcKK7IH3K+1yZKx/ztLjaatQ4wIqrhCRR4rKPnOvscq9C4hAZpaq4FMCcXAOVmRoi62lBKkjlRO2zV2pbq6SUc3OtcoXV6Gr9rJrgD2CPSG7NCjfYnVa+JjnCFXaTUX+yeNzdr15tpZndC1yUWXWru39stc1yIyJvq64c6LaaLIIgCCaGO3RHo0O5+4vXsdlh4PKB9mXAY8X71ZavSli3giAIxsUEvKGGcBC4wczmzeyZwJXAJ4AHgSvN7JlmNkffCH6wamfxZBEEQTAuJuANZWbfC/wn4ALg98zsL9z9Ze7+sJl9iL7hugP8lLt3i23eANwNNIHb3f3hquNsq8nCGHAtzKh58xXpKBZsuE0DoOtSWEfcIdRm0aasr1/QPJbs83hvQdpl91otynS8W16fc/k9Ie63ug+ll3kIVfdaRe0LdWwW6saqqD1iZ8bNNekjNol9zbLNYkHcWjUNB6Qu0Fp0aF8mq+wguzL31m6xQTTFm6VF2B9mGgcmUIPb3T8KfHSVdW8D3pZZfhdw11qOMxUZysz2m9k9ZvZo8ffcVfrdWPR51MxuHFg+Z2YHzOxvzOyvzez7Jzf6IAiCOjh4r95rBpiWzeJm4D53vxK4r2iXMLP9wJvpu3RdA7x5YFK5Ffiquz8buAr4o4mMOgiCoC5O38Bd5zUDTEuGuh74zuL9HcD9wM9Jn5cB97j7EQAzuwe4Dvgg8GPANwG4ew94vM5BGzTYWRSDWfLUlXEUrIjsdIkU1tHbIudSqRzvlWWRY9Je9LKckZNRkn22yjLUskhVVfIZwFJvuCunylB1WJDzofKPSkzav9+nfM5zrrCD7BQZ6pyK/pC6We9tDJeMFmq4tKrs1LS1/5aLiOxNxhbKOjutO+sZ7v4lgOLvhZk+l5IGjlxqZvuK9lvN7JNm9mEze8ZqBzKzm8zsITN76PEnhqfzCIIgGCnT9YYaKWObLMzsXjP7TOZ1fd1dZJY5/aehy4A/dvdvA/4EeOdqO3H3A+5+tbtfff55YTAMgmBSTCaR4KQYmww1LIjEzL5iZhe7+5fM7GLgq5luh3laqoL+BHE/8ARwiqet/x8GXjeKMQdBEIwMB7ZQivJp2SwOAjcCtxV/c+HqdwO/NGDUfilwi7u7mf03+hPJx4FrqUiAdQbjaU13PW6Ju2vozktUu9cOslzDZtGVqmw7pa2pO0720vQeynFX19nht4Jm061Ds4arrKJurA3JQqA2jPw+pPJdxTleEDvInszzti7a06g+x4PUud/URhH2hy3AjDw11GFak8VtwIfM7HXAfwdeDVDkYv9Jd/9xdz9iZm+lH20I8JYzxm76xvD3m9l/AL4G/Ohkhx8EQVDF6NJ9bAamMlm4+xP0nwh0+UPAjw+0bwduz/T7e+CfjXOMQRAEG8LBZySGog7bKoJ7kLaN56P3KpI39sQl9YJmtZyxy4dLW4uusku1FLZQsU8ll3VW6SZZUzf+j6IuvHX2uSB9FirksJ015EXNCDtfIwPsICEpbVMmEME9KbbtZBEEQTB2wmYRBEEQDMU9vKGC1VmrPFGHbsWvk4YkoNtZw9FrvlcdpTzISjbsZfxoXeqFtHRkQir4DN9G61ZnxyHHDVkpqEU8WQRBEATDcby7dbJGxGQRBEEwDiaUonxSxGQRBEEwLsJ1NpgkuxsLQ9evK4PuGCT3KrfhdAjV9gd1Wa1De43ZWnfY/JqPEQRVOODxZBEEQRAMxT2eLIIgCIJqtpKB23wLuXZVYWZfA/5+woc9n5rFmSbMZhxXjKkeMab6bGRcX+/uF6z3wGb2B8Xx6/C4u1+33mNNgm01WUwDM3vI3a+e9jiUzTiuGFM9Ykz12azjmkUisigIgiCoJCaLIAiCoJKYLMbPgWkPYBU247hiTPWIMdVns45r5gibRRAEQVBJPFkEQRAElcRkEQRBEFQSk8UIMLNXm9nDZtYr6oiv1u86M3vEzA6Z2c0Dy59pZn9qZo+a2W+bWXX5vOox7Teze4p93mNm52b6fJeZ/cXAa9HMXlms+00z+/zAuudtdEx1x1X06w4c++DA8mmdq+eZ2Z8U1/nTZvaagXUjO1er3SMD6+eLz32oOA9XDKy7pVj+iJm9bL1jWMeYftbMPlucl/vM7OsH1mWv4wTG9CNm9rWBY//4wLobi2v9qJndOKoxbXncPV4bfAH/A/CNwP3A1av0aQJ/C3wDMAd8CriqWPch4Ibi/a8Crx/BmN4B3Fy8vxl4e0X//cARYGfR/k3gVWM4V7XGBZxYZflUzhXwbODK4v0lwJeAfaM8V8PukYE+/xPwq8X7G4DfLt5fVfSfB55Z7Kc5oTF918B98/ozYxp2HScwph8BfnmV+/xzxd9zi/fnjnqMW/EVTxYjwN3/yt0fqeh2DXDI3T/n7svAncD1ZmbAi4CPFP3uAF45gmFdX+yr7j5fBfy+u58awbGHsdZxnWWa58rd/8bdHy3ePwZ8FVh3dO8qZO+RIWP9CHBtcV6uB+509yV3/zxwqNjf2Mfk7n84cN88AFw2guNuaExDeBlwj7sfcfcngXuATR05vVmIyWJyXAp8YaB9uFh2HvCUu3dk+UZ5hrt/CaD4e2FF/xuAD8qytxXSwrvMRpaate64FszsITN74Iw0xiY5V2Z2Df1ftH87sHgU52q1eyTbpzgPR+mflzrbjmtMg7wO+P2Bdu46TmpM319ck4+Y2eVr3DYQIpFgTczsXuCizKpb3f1jdXaRWeZDlm9oTHW2H9jPxcA3A3cPLL4F+DL9L8UDwM8Bb5nguL7O3R8zs28APm5mfwkcy/Sbxrl6P3Cj+9mUous+V7r7zDL9fCO/jyqovV8z+yHgauCFA4uT6+juf5vbfsRj+m/AB919ycx+kv7T2ItqbhtkiMmiJu7+4g3u4jBw+UD7MuAx+knO9plZq/ileGb5hsZkZl8xs4vd/UvFF9xXh+zqB4CPuj9dGOPML21gycx+A3hjnTGNalyF1IO7f87M7ge+FfgdpniuzOwc4PeAf+PuDwzse93nSljtHsn1OWxmLWAvfVtTnW3HNSbM7MX0J94XuvvZAu+rXMeNThaVY3L3Jwaa/xl4+8C23ynb3r/B8WwLQoaaHA8CVxbePHP0ZZ+D7u7AH9K3GYNto4cAAAN3SURBVADcCNR5UqniYLGvOvt8LSJBFV+aZ+wErwQ+M4Ix1RqXmZ17Rsoxs/OB7wA+O81zVVyzjwLvc/cPy7pRnavsPTJkrK8CPl6cl4PADYW31DOBK4FPrHMcaxqTmX0r8GvAK9z9qwPLs9dxQmO6eKD5CuCvivd3Ay8txnYu8FLKT9TBakzbwr4VXsD30v/FsgR8Bbi7WH4JcNdAv+8G/ob+L6tbB5Z/A/1/7EPAh4H5EYzpPOA+4NHi7/5i+dXAewf6XQF8EWjI9h8H/pL+F98HgN0jOleV4wL+cXHsTxV/XzftcwX8ELAC/MXA63mjPle5e4S+pPWK4v1C8bkPFefhGwa2vbXY7hHg5SO8v6vGdG9x3585LwerruMExvS/Aw8Xx/5D4JsGtv2x4vwdAn50VGPa6q9I9xEEQRBUEjJUEARBUElMFkEQBEElMVkEQRAElcRkEQRBEFQSk0UQBEFQSUwWwbbFzH7SzH64eP8jZnbJwLr3mtlV0xtdEGwuwnU2CIAiuviN7v7QtMcSBJuReLIIZhIzu8LM/trM7hhIFrfTzK41sz83s780s9sHIohvG6i58M5i2c+b2RvN7FX0A/B+q6h9sMPM7reiNomZvbbY32fM7O0DYzhhZm8zs08VifKeMY1zEQSTICaLYJb5RuCAuz+XfpLBn6VfW+I17v7N9HOfvd7M9tOPsn9O0fcXB3fi7h8BHgL+ubs/z91Pn1lXSFNvp5+E7nnA8weyp+4CHnD3bwH+H+AnxvZJg2DKxGQRzDJfcPc/Lt5/ALgW+Ly7/02x7A7gn9GfSBaB95rZ9wFrqdnxfOB+d/+a95MX/laxT4Bl4HeL939GP3VKEGxJYrIIZplaBrfiS/4a+llrXwn8wRqOkUtpfYYVf9ro1yWyOAdbmJgsglnm68zsHxXvX0s/od0VZvasYtm/AP7IzHYDe939LuCn6ctJynFgT2b5nwIvNLPzzaxZHOePRvkhgmAWiF9CwSzzV8CNZvZr9DPG/mv6ZT0/XNR6eJB+ne79wMfMbIH+k8LPZPb1m8Cvmtlp4MwEhPdrXNxCP3Op0c8iPIq06EEwU4TrbDCTmNkVwO+6+z+Y8lCCYFsQMlQQBEFQSTxZBEEQBJXEk0UQBEFQSUwWQRAEQSUxWQRBEASVxGQRBEEQVBKTRRAEQVDJ/w8sgZPM3se04AAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "poses = np.linspace(env.unwrapped.min_position,\n",
    "          env.unwrapped.max_position, 128)\n",
    "vels = np.linspace(-env.unwrapped.max_speed, env.unwrapped.max_speed, 128)\n",
    "positions, velocities = np.meshgrid(poses, vels)\n",
    "\n",
    "# 绘制动作价值估计\n",
    "\n",
    "@np.vectorize\n",
    "def get_q(position, velocity, action):\n",
    "    return agent.get_q((position, velocity), action)\n",
    "\n",
    "q_values = np.empty((len(poses), len(vels), 3))\n",
    "for action in range(3):\n",
    "    q_values[:, :, action] = get_q(positions, velocities, action)\n",
    "\n",
    "\n",
    "fig, axes = plt.subplots(1, 3, figsize=(15, 4))\n",
    "for action, ax in enumerate(axes):\n",
    "    c = ax.pcolormesh(positions, velocities, q_values[:, :, action])\n",
    "    ax.set_xlabel('position')\n",
    "    ax.set_ylabel('velocity')\n",
    "    fig.colorbar(c, ax=ax)\n",
    "    ax.set_title('action = {}'.format(action))\n",
    "\n",
    "# 绘制状态价值估计\n",
    "\n",
    "v_values = q_values.max(axis=-1)\n",
    "\n",
    "fig, ax = plt.subplots(1, 1)\n",
    "c = ax.pcolormesh(positions, velocities, v_values)\n",
    "ax.set_xlabel('position')\n",
    "ax.set_ylabel('velocity')\n",
    "fig.colorbar(c, ax=ax);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "2BV6Ox_pC59x",
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制动作估计\n",
    "\n",
    "@np.vectorize\n",
    "def decide(position, velocity):\n",
    "    return agent.decide((position, velocity))\n",
    "\n",
    "q_values = np.empty((len(poses), len(vels), 3))\n",
    "action_values = decide(positions, velocities)\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "c = ax.pcolormesh(positions, velocities, action_values)\n",
    "ax.set_xlabel('position')\n",
    "ax.set_ylabel('velocity')\n",
    "fig.colorbar(c, ax=ax, boundaries=[-.5, .5, 1.5, 2.5], ticks=[0, 1, 2]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "eE_8O-htDrnl"
   },
   "source": [
    "### 深度 Q 网络求解最优策略\n",
    "经验回放"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "TsOqN8VJC592"
   },
   "outputs": [],
   "source": [
    "class DQNReplayer:\n",
    "    def __init__(self, capacity):\n",
    "        self.memory = pd.DataFrame(index=range(capacity),\n",
    "                columns=['observation', 'action', 'reward',\n",
    "                'next_observation', 'done'])\n",
    "        self.i = 0\n",
    "        self.count = 0\n",
    "        self.capacity = capacity\n",
    "    \n",
    "    def store(self, *args):\n",
    "        self.memory.loc[self.i] = args\n",
    "        self.i = (self.i + 1) % self.capacity\n",
    "        self.count = min(self.count + 1, self.capacity)\n",
    "        \n",
    "    def sample(self, size):\n",
    "        indices = np.random.choice(self.count, size=size)\n",
    "        return (np.stack(self.memory.loc[indices, field]) for field in\n",
    "                self.memory.columns)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "N6fehATMETDo"
   },
   "source": [
    "DQN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ZAMDYhvaEPnQ"
   },
   "outputs": [],
   "source": [
    "class DQNAgent:\n",
    "    def __init__(self, env, net_kwargs={}, gamma=0.99, epsilon=0.001,\n",
    "             replayer_capacity=10000, batch_size=64):\n",
    "        observation_dim = env.observation_space.shape[0]\n",
    "        self.action_n = env.action_space.n\n",
    "        self.gamma = gamma\n",
    "        self.epsilon = epsilon\n",
    "        \n",
    "        self.batch_size = batch_size\n",
    "        self.replayer = DQNReplayer(replayer_capacity) # 经验回放\n",
    "         \n",
    "        self.evaluate_net = self.build_network(input_size=observation_dim,\n",
    "                output_size=self.action_n, **net_kwargs) # 评估网络\n",
    "        self.target_net = self.build_network(input_size=observation_dim,\n",
    "                output_size=self.action_n, **net_kwargs) # 目标网络\n",
    "\n",
    "        self.target_net.set_weights(self.evaluate_net.get_weights())\n",
    "\n",
    "    def build_network(self, input_size, hidden_sizes, output_size,\n",
    "                activation=tf.nn.relu, output_activation=None,\n",
    "                learning_rate=0.01): # 构建网络\n",
    "        model = keras.Sequential()\n",
    "        for layer, hidden_size in enumerate(hidden_sizes):\n",
    "            kwargs = dict(input_shape=(input_size,)) if not layer else {}\n",
    "            model.add(keras.layers.Dense(units=hidden_size,\n",
    "                    activation=activation, **kwargs))\n",
    "        model.add(keras.layers.Dense(units=output_size,\n",
    "                activation=output_activation)) # 输出层\n",
    "        optimizer = tf.optimizers.Adam(lr=learning_rate)\n",
    "        model.compile(loss='mse', optimizer=optimizer)\n",
    "        return model\n",
    "        \n",
    "    def learn(self, observation, action, reward, next_observation, done):\n",
    "        self.replayer.store(observation, action, reward, next_observation,\n",
    "                done) # 存储经验\n",
    "\n",
    "        observations, actions, rewards, next_observations, dones = \\\n",
    "                self.replayer.sample(self.batch_size) # 经验回放\n",
    "\n",
    "        next_qs = self.target_net.predict(next_observations)\n",
    "        next_max_qs = next_qs.max(axis=-1)\n",
    "        us = rewards + self.gamma * (1. - dones) * next_max_qs\n",
    "        targets = self.evaluate_net.predict(observations)\n",
    "        targets[np.arange(us.shape[0]), actions] = us\n",
    "        self.evaluate_net.fit(observations, targets, verbose=0)\n",
    "\n",
    "        if done: # 更新目标网络\n",
    "            self.target_net.set_weights(self.evaluate_net.get_weights())\n",
    "\n",
    "    def decide(self, observation): # epsilon贪心策略\n",
    "        if np.random.rand() < self.epsilon:\n",
    "            return np.random.randint(self.action_n)\n",
    "        qs = self.evaluate_net.predict(observation[np.newaxis])\n",
    "        return np.argmax(qs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "cowmxSvsFZCK"
   },
   "outputs": [],
   "source": [
    "def play_qlearning(env, agent, train=False, render=False):\n",
    "    episode_reward = 0\n",
    "    observation = env.reset()\n",
    "    while True:\n",
    "        if render:\n",
    "            env.render()\n",
    "        action = agent.decide(observation)\n",
    "        next_observation, reward, done, _ = env.step(action)\n",
    "        episode_reward += reward\n",
    "        if train:\n",
    "            agent.learn(observation, action, reward, next_observation,\n",
    "                    done)\n",
    "        if done:\n",
    "            break\n",
    "        observation = next_observation\n",
    "    return episode_reward"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "aDcTjATVEcRQ"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "平均回合奖励 = -13705.0 / 100 = -137.05\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "net_kwargs = {'hidden_sizes' : [16,], 'learning_rate' : 0.01}\n",
    "agent = DQNAgent(env, net_kwargs=net_kwargs)\n",
    "\n",
    "# 训练\n",
    "episodes = 500\n",
    "episode_rewards = []\n",
    "for episode in range(episodes):\n",
    "    episode_reward = play_qlearning(env, agent, train=True)\n",
    "    episode_rewards.append(episode_reward)\n",
    "plt.plot(episode_rewards)\n",
    "\n",
    "# 测试\n",
    "agent.epsilon = 0. # 取消探索\n",
    "episode_rewards = [play_qlearning(env, agent) for _ in range(100)]\n",
    "print('平均回合奖励 = {} / {} = {}'.format(sum(episode_rewards),\n",
    "        len(episode_rewards), np.mean(episode_rewards)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "u8xoo8xGEcsa"
   },
   "source": [
    "双重深度 Q 网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "XJkuKVHEEXeR"
   },
   "outputs": [],
   "source": [
    "class DoubleDQNAgent(DQNAgent):\n",
    "    def learn(self, observation, action, reward, next_observation, done):\n",
    "        self.replayer.store(observation, action, reward, next_observation,\n",
    "                done) # 存储经验\n",
    "        observations, actions, rewards, next_observations, dones = \\\n",
    "                self.replayer.sample(self.batch_size) # 经验回放\n",
    "        next_eval_qs = self.evaluate_net.predict(next_observations)\n",
    "        next_actions = next_eval_qs.argmax(axis=-1)\n",
    "        next_qs = self.target_net.predict(next_observations)\n",
    "        next_max_qs = next_qs[np.arange(next_qs.shape[0]), next_actions] \n",
    "        us = rewards + self.gamma * next_max_qs * (1. - dones)\n",
    "        targets = self.evaluate_net.predict(observations)\n",
    "        targets[np.arange(us.shape[0]), actions] = us\n",
    "        self.evaluate_net.fit(observations, targets, verbose=0)\n",
    "\n",
    "        if done:\n",
    "            self.target_net.set_weights(self.evaluate_net.get_weights())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "42nFQnMpEq1u"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "平均回合奖励 = -10954.0 / 100 = -109.54\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "net_kwargs = {'hidden_sizes' : [16,], 'learning_rate' : 0.004}\n",
    "agent = DoubleDQNAgent(env, net_kwargs=net_kwargs)\n",
    "\n",
    "# 训练\n",
    "episodes = 200\n",
    "episode_rewards = []\n",
    "for episode in range(episodes):\n",
    "    episode_reward = play_qlearning(env, agent, train=True)\n",
    "    episode_rewards.append(episode_reward)\n",
    "plt.plot(episode_rewards)\n",
    "\n",
    "# 测试\n",
    "agent.epsilon = 0. # 取消探索\n",
    "episode_rewards = [play_qlearning(env, agent) for _ in range(100)]\n",
    "print('平均回合奖励 = {} / {} = {}'.format(sum(episode_rewards),\n",
    "        len(episode_rewards), np.mean(episode_rewards)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "env.close()"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [],
   "name": "MountainCar_v0_201901302220.ipynb",
   "provenance": [],
   "version": "0.3.2"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
